/**
 * 请求参数选项对象
 */
export interface IAjaxParam<D = any> {
	/**
	 * 请求地址
	 */
	url : string;
	/**
	 * 重试次数，默认0不重试
	 */
	retry ?: number;
	/**
	 * 是否使用缓存
	 */
	useCache ?: boolean;
	/**
	 * 请求方法
	 */
	method ?: "POST" | "OPTIONS" | "GET" | "HEAD" | "PUT" | "DELETE" | "TRACE" | "CONNECT";

	baseURL ?: string;
	/**
	 * 请求参数：本系统比较粗暴，全部post
	 */
	data ?: D;

	header ?: any;
}

export interface IPageInfo {
	total : number,
	hasNextPage : boolean,
}

export interface IResultEntity<T = any> {
	[index : string] : any,
	/**
	 * 响应结果，正数成功，负数失败
	 */
	code : number,
	/**
	 * 响应消息
	 */
	msg : string,

	/**
	 * 响应数据集
	 */
	data ?: T,

	page_info ?: IPageInfo,
}


/**
 * 节流请求参数
 */
export interface IRestrictParam<D = any> extends IAjaxParam<D> {
	/**
	 * 节流的key
	 */
	key ?: string,
	/**
	 * 节流的时长（毫秒）
	 */
	restrictTimeout ?: number
}

export interface IRequestSuccess<T = any> {
	data : IResultEntity<T>
	statusCode : number
	header : any
	cookies : string[]
}